const path = require('path')

console.log("---filename---:", __filename)
console.log("---dirname---:", __dirname)
console.log('----***********----')

/**
 * 1.获取路径中的基础名称：basename()
 *
 * 01：返回的是接收路径中的最后一部分
 * 02：第2个参数表示扩展名，没有设置则返回完整的文件名称带后缀
 * 03：第2个参数作为后缀时，如果没有在当前路径中被匹配到，那么就会忽略
 * 04：处理目录路径的时候，如果结尾处有路径分隔符，则也会被忽略
 */


// console.log(path.basename(__filename))
// console.log(path.basename(__filename,'.js'))
// console.log(path.basename(__filename,'.css'))
// console.log(path.basename(__dirname))
// console.log(path.basename('a/b/c'))
// console.log(path.basename('a/b/c/'))

// ********************************************************* //

/**
 * 2.获取路径目录名（路径）：dirname()
 *
 * 01：返回路径中最后一个部分的上一层目录所在路径
 * 02：处理目录路径的时候，如果结尾处有路径分隔符，则也会被忽略
 */

// console.log(path.dirname(__filename))
// console.log(path.dirname(__dirname))
// console.log(path.dirname('/a/b/c'))
// console.log(path.dirname('/a/b/c/'))

// ********************************************************* //

/**
 * 3.获取路径的扩展名：extname()
 *
 * 01：返回path路径中相应文件的扩展名
 * 02：如果path路径中存在多个点，它匹配的是最后一个点，到结尾的内容
 */

// console.log(path.extname(__filename))
// console.log(path.extname(__dirname))
// console.log(path.extname('/a/b/c/'))
// console.log(path.extname('/a/b/c.css'))
// console.log(path.extname('/a/b/c.css.'))
// console.log(path.extname('/a/b/c.css.html.ts'))

// ********************************************************* //

/**
 * 4.解析路径：parse()
 * 
 * 01：接收一个路径，返回一个对象，包含不同的信息
 * 02：root dir base ext name
 */

// const obj = path.parse('/a/b/c/index.html')
// const obj = path.parse('/a/b/c/index.html/')
// const obj = path.parse('/a/b/c')
// const obj = path.parse('/a/b/c/')
// const obj = path.parse('./a/b/c/')
// console.log(obj)

// ********************************************************* //

/**
 * 5.序列化路径：format()
 * 
 * 01：和parse()类似，但是作用相反
 */

// const obj = path.parse('/a/b/c/index.js')
// console.log(path.format(obj))

// ********************************************************* //

/**
 * 6.判断当前路径是否是绝对路径：isAbsolute()
 * 
 * 01：返回一个布尔值
 */

// console.log(path.isAbsolute('foo'))
// console.log(path.isAbsolute('/foo'))
// console.log(path.isAbsolute('///foo'))
// console.log(path.isAbsolute('/./foo'))

// ********************************************************* //

/**
 * 7.拼接路径：join()
 * 
 * 01：通过拼接片段参数，返回一个拼接过的新的路径
 * 02：当参数有空时，忽略
 * 03：只有一个参数，且为空时，返回的是一个点
 */

// console.log(path.join('a','b'))
// console.log(path.join('a',''，'/c'))

// ********************************************************* //

/**
 * 8.规范化路径：normalize()
 * 
 * 01：路径为空字符串时，返回一个点
 */

// console.log(path.normalize('/a/b/c'))
// console.log(path.normalize('/a/b../c'))
// console.log(path.normalize('/\a///\\/b../c'))
// console.log(path.normalize('/\a//\/b../c'))
// console.log(path.normalize(''))

// ********************************************************* //

/**
 * 9.返回绝对路径：resolve()
 */

// console.log(path.resolve('a','b'))
// console.log(path.resolve('/a','b'))
// console.log(path.resolve('/a','/b'))
// console.log(path.resolve('a','/b'))

